import subprocess
from IPy import IP
#使用多进程和资源共享
from multiprocessing import Process
import multiprocessing
#端口扫描函数，将扫描结果保存到共享列表
def ipScan(i,ip_list):
    x = subprocess.run(f"ping {i} -c 1 -w 1",shell=True,stderr=subprocess.PIPE,stdout=subprocess.PIPE)
    if(x.returncode == 0):
        ip_list.append(f"{i}已被使用")
    else:
        ip_list.append(f"{i}未被使用")
#多进程实现
if __name__ == '__main__':
    #使用manager共享资源
        server = multiprocessing.Manager()
        ip_list = server.list()
    #异常处理，如果输入格式不符抛出错误信息
        try:
            ip = IP(input("请输入ip地址网段如：(192.168.0.0/24)"))
        except:
            print("笨p，你的ip网段格式输入错了！")
        else:
            for i in ip:
                p = Process(target=ipScan,args=(i,ip_list))
                p.start()
            p.join()
        #将扫描结果放入文件保存
            with open("ip_scan.txt","a+") as ips:
                for i in ip_list:
                    ips.write(f"{i}\n")

